package entities;





import java.awt.Graphics;

public class Ball implements Drawable{
    private int velocidadX;
    private int velocidadY;
    private int coordenadaX;
    private int coordenadaY;
    private int radio;
    
    public Ball(){
        velocidadX = 1;
        velocidadY = 1;
        coordenadaX = 200;
        coordenadaY = 200;
        radio = 7;
    }
    
    public Ball(int coordenadaX, int coordenadaY, int velocidadX, int velocidadY){
        this.coordenadaX = coordenadaX;
        this.coordenadaY = coordenadaY;
        this.velocidadX = velocidadX;
        this.velocidadY = velocidadY;
        this.radio = 10;
    }

    @Override
    public void render(Graphics g) {
        g.fillOval(coordenadaX, coordenadaY, radio*2, radio*2);
    }

    @Override
    public void add(Drawable d) {

    }

    @Override
    public void remove(Drawable d) {
    }

    @Override
    public Drawable getChild(int i) {
        return null;
    }

    @Override
    public Drawable colision(Drawable d) {
        Ball ball = (Ball) d;
        float h;
        h = (float) Math.sqrt((ball.coordenadaX - coordenadaX)*(ball.coordenadaX - coordenadaX) + 
                (ball.coordenadaY - coordenadaY) * (ball.coordenadaY - coordenadaY));
        if (ball.radio + radio - 1 <= h & h <= ball.radio + radio + 1){
            if (ball.velocidadX * velocidadX < 0){
                ball.velocidadX = ball.velocidadX * -1;
                velocidadX = velocidadX * -1;
            }
            if (ball.velocidadY * velocidadY < 0){
                ball.velocidadY = ball.velocidadY * -1;
                velocidadY = velocidadY * -1;
            }
        }
        return null;
    }
    
    public void move(){
        coordenadaX = coordenadaX + velocidadX;
        coordenadaY = coordenadaY + velocidadY;
    }

    public int getVelocidadX() {
        return velocidadX;
    }

    public void setVelocidadX(int velocidadX) {
        this.velocidadX = velocidadX;
    }

    public int getVelocidadY() {
        return velocidadY;
    }

    public void setVelocidadY(int velocidadY) {
        this.velocidadY = velocidadY;
    }

    public int getCoordenadaX() {
        return coordenadaX;
    }

    public int getCoordenadaY() {
        return coordenadaY;
    }

    public int getRadio() {
        return radio;
    }
}
